package models.vo {

  import org.restfulx.collections.ModelsCollection;
  import org.restfulx.models.RxModel;

  [Resource(name="produtos_servicos")]

  [Bindable]
  public class ProdutoServico extends RxModel {

    public static const LABEL:String = "descricao";

    public var descricao:String;

    public var descricaoAnalista:String;

    public var obsVistoria:String;

    public var direitoNegado:Boolean;

    public var analiseDireito:String;

    public var enquadramento:String;

    public var capacidadeRealInstalada:int;

    public var producaoEfetivaAnual:int;

    public var vendasAtuaisMercadoInterno:int;

    public var vendasAtuaisMercadoExterno:int;

    public var vendasProjetadasMercadoInterno:int;

    public var vendasProjetadasMercadoExterno:int;

    [BelongsTo]
    public var caracterizacao:Caracterizacao;

    [BelongsTo]
    public var setorEconomico:SetorEconomico;

    [BelongsTo]
    public var unidadeMedida:UnidadeMedida;

    [HasMany]
    public var mercadorias:ModelsCollection;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function ProdutoServico() {
      super(LABEL);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getSetorEconomico():SetorEconomico {
      if (!setorEconomico)
        setorEconomico = new SetorEconomico();

      return setorEconomico;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getUnidadeMedida():UnidadeMedida {
      if (!unidadeMedida)
        unidadeMedida = new UnidadeMedida();

      return unidadeMedida;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getMercadorias():ModelsCollection {
      if (!mercadorias)
        mercadorias = new ModelsCollection();

      return mercadorias;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getDescricaoAnalista():String {
      return (descricaoAnalista != "") ? descricaoAnalista : descricao;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getInsumoById(id:String):Mercadoria {
      var result:Mercadoria = new Mercadoria();
      for (var i:int = 0; i < mercadorias.length; i++) {
        if (Mercadoria(mercadorias.getItemAt(i)).id == id) {
          result = Mercadoria(mercadorias.getItemAt(i));
          break;
        }
      }
      return result;
    }

  }
}
